﻿package mortal.game.view.palyer
{
    import Message.Public.*;
    import __AS3__.vec.*;
    import com.mui.controls.*;
    import com.mui.utils.*;
    import extend.language.*;
    import flash.events.*;
    import flash.geom.*;
    import flash.utils.*;
    import mortal.game.cache.*;
    import mortal.game.events.*;
    import mortal.game.mvc.*;
    import mortal.game.resource.*;
    import mortal.game.view.common.*;
    import mortal.game.view.common.item.*;
    import mortal.game.view.forging.data.*;
    import mortal.game.view.mount.panel.*;
    import mortal.game.view.wizard.panel.*;
    import mortal.mvc.core.*;

    public class PlayerEquipPark extends GSprite
    {
        protected var _equipmentList:Vector.<OtherEquipItem>;
        protected var _equipTypeList:Array;
        protected var _equipTxt:GImageBitmap;

        public function PlayerEquipPark()
        {
            this._equipTypeList = [];
            return;
        }// end function

        override protected function createDisposedChildrenImpl() : void
        {
            super.createDisposedChildrenImpl();
            this._equipTxt = UIFactory.gImageBitmap(ImagesConst.playerModule_EquipTxt, -98, 55, this);
            this.resetEquipListPos();
            this.createEquipList();
            return;
        }// end function

        override protected function disposeImpl(param1:Boolean = true) : void
        {
            var _loc_2:OtherEquipItem = null;
            for each (_loc_2 in this._equipmentList)
            {
                
                _loc_2.name = "";
                _loc_2.dispose(param1);
                _loc_2 = null;
            }
            this._equipTxt.dispose();
            this._equipTxt = null;
            this._equipmentList = new Vector.<OtherEquipItem>;
            this._equipTypeList.length = 0;
            if (EquipBaseWin.isViewShow)
            {
                EquipBaseWin.instance.hide();
            }
            super.disposeImpl(param1);
            return;
        }// end function

        protected function resetEquipListPos() : void
        {
            this._equipTypeList = [];
            this._equipTypeList[EEquip._EEquipHelmet] = {x:105, y:73, type:3};
            this._equipTypeList[EEquip._EEquipNecklace] = {x:25, y:50, type:1};
            this._equipTypeList[EEquip._EEquipShoulder] = {x:-69, y:165, type:1};
            this._equipTypeList[EEquip._EEquipAmulet] = {x:180, y:50, type:2};
            this._equipTypeList[EEquip._EEquipClothes] = {x:-69, y:225, type:1};
            this._equipTypeList[EEquip._EEquipWristlet] = {x:280, y:165, type:2};
            this._equipTypeList[EEquip._EEquipBelt] = {x:280, y:285, type:2};
            this._equipTypeList[EEquip._EEquipGlove] = {x:280, y:225, type:2};
            this._equipTypeList[EEquip._EEquipPants] = {x:-69, y:285, type:1};
            this._equipTypeList[EEquip._EEquipPendant] = {x:-35, y:100, type:1};
            this._equipTypeList[EEquip._EEquipShoe] = {x:280, y:345, type:2};
            this._equipTypeList[EEquip._EEquipRing] = {x:245, y:100, type:2};
            this._equipTypeList[EEquip._EEquipWeapon] = {x:-69, y:345, type:1};
            return;
        }// end function

        protected function createEquipList() : void
        {
            var _loc_2:OtherEquipItem = null;
            var _loc_3:int = 0;
            this._equipmentList = new Vector.<OtherEquipItem>;
            var _loc_1:int = 13;
            while (_loc_3 < _loc_1)
            {
                
                _loc_2 = UICompomentPool.getUICompoment(OtherEquipItem);
                _loc_2.setItemStyle(ItemStyleConst.Small, ImagesConst.PackItemBg, 3, 3);
                _loc_2.isAutoUpdateEquip(true, EGroup._EGroupProp, EProp._EPropEquip, _loc_3, EPlayerItemPosType._EPlayerItemPosTypeRole);
                var _loc_4:Boolean = true;
                _loc_2.isDropAble = true;
                _loc_2.isDragAble = _loc_4;
                _loc_2.bgName = "EqmBg_" + _loc_3;
                _loc_2.name = "EquipsPanel_equip_" + _loc_3;
                _loc_2.isThrowAble = false;
                _loc_2.x = this._equipTypeList[_loc_3].x;
                _loc_2.y = this._equipTypeList[_loc_3].y;
                _loc_2.strengNumPosType = this._equipTypeList[_loc_3].type;
                _loc_2.isShowLock = true;
                _loc_2.isShowOverLight = true;
                _loc_2.doubleClickEnabled = true;
                _loc_2.buttonMode = true;
                _loc_2.pos = _loc_3;
                _loc_2.configEventListener(MouseEvent.CLICK, this.openSmallWin);
                _loc_2.configEventListener(MouseEvent.DOUBLE_CLICK, this.doubleCkickHandler);
                this.addChild(_loc_2);
                this._equipmentList.push(_loc_2);
                _loc_3++;
            }
            this.updateAllEquip();
            return;
        }// end function

        private function getSmallWinTitleData() : Dictionary
        {
            var _loc_1:* = new Dictionary();
            _loc_1[0] = [{name:"equip", label:Language.getString(41306)}];
            _loc_1[1] = [{name:"equip", label:Language.getString(41307)}];
            _loc_1[2] = [{name:"equip", label:Language.getString(41308)}];
            _loc_1[3] = [{name:"equip", label:Language.getString(41309)}];
            _loc_1[4] = [{name:"equip", label:Language.getString(41310)}];
            _loc_1[5] = [{name:"equip", label:Language.getString(41311)}];
            _loc_1[6] = [{name:"equip", label:Language.getString(41312)}];
            _loc_1[7] = [{name:"equip", label:Language.getString(41313)}];
            _loc_1[8] = [{name:"equip", label:Language.getString(41314)}];
            _loc_1[9] = [{name:"equip", label:Language.getString(41315)}];
            _loc_1[10] = [{name:"equip", label:Language.getString(41316)}];
            _loc_1[11] = [{name:"equip", label:Language.getString(41317)}];
            _loc_1[12] = [{name:"equip", label:Language.getString(41318)}];
            _loc_1[99] = [{name:"equip", label:Language.getString(41319)}];
            return _loc_1;
        }// end function

        private function openSmallWin(event:MouseEvent) : void
        {
            var _loc_2:* = event.currentTarget as OtherEquipItem;
            var _loc_3:* = this.getSmallWinTitleData();
            EquipBaseWin.instance.setWinData(_loc_3, EPlayerItemPosType._EPlayerItemPosTypeRole, EGroup._EGroupProp, EProp._EPropEquip, _loc_2.pos);
            var _loc_4:* = this.localToGlobal(new Point(0, 0));
            EquipBaseWin.instance.show(_loc_4.x - 20, _loc_4.y + 195);
            return;
        }// end function

        protected function doubleCkickHandler(event:MouseEvent) : void
        {
            var _loc_2:* = event.currentTarget as OtherEquipItem;
            if (_loc_2.itemData && _loc_2.itemData.serverData)
            {
                Dispatcher.dispatchEvent(new DataEvent(EventName.GetOffEquip, _loc_2.itemData));
            }
            return;
        }// end function

        public function updateAllEquip() : void
        {
            var _loc_2:OtherEquipItem = null;
            var _loc_3:int = 0;
            var _loc_1:* = this._equipmentList.length;
            while (_loc_3 < _loc_1)
            {
                
                _loc_2 = this._equipmentList[_loc_3];
                _loc_2.itemData = Cache.instance.pack.packRolePackCache.getEquipByType(_loc_3);
                if (_loc_2.itemData == null)
                {
                    _loc_2.toolTipData = GameDefConfig.instance.getEquipName(_loc_3);
                }
                _loc_2.updateStrengLevel();
                _loc_2.updateAroundEffect();
                _loc_3++;
            }
            return;
        }// end function

        public function updateEquipByType(param1:int, param2:EquipUpdateParamInfo = null) : void
        {
            if (param1 < 0 || param1 > this._equipmentList.length)
            {
                return;
            }
            var _loc_3:* = this._equipmentList[param1];
            _loc_3.itemData = Cache.instance.pack.packRolePackCache.getEquipByType(param1);
            if (_loc_3.itemData)
            {
                if (param2)
                {
                    if (param2.isNeedUpdateStrengInfo)
                    {
                        _loc_3.updateStrengLevel();
                        _loc_3.updateAroundEffect();
                    }
                    if (param2.isNeedUpdateEmbedInfo)
                    {
                        if (param2.embedType == ForgingConst.GemPanelType_Embed)
                        {
                            _loc_3.updateGemEmbedInfo();
                            _loc_3.updateEmbedState();
                        }
                        else
                        {
                            _loc_3.updateGemEmbedInfo();
                            _loc_3.updateGemUpgradeState();
                        }
                    }
                    if (param2.isNeedUpdateRefreshInfo)
                    {
                        _loc_3.updateRefreshState();
                    }
                    if (param2.isNeedUpdateColorAdvanceInfo)
                    {
                        _loc_3.updateColorAdvanceState();
                    }
                    if (param2.isNeedUpdateStarAdvanceInfo)
                    {
                        _loc_3.updateStarAdvanceState();
                    }
                }
            }
            else
            {
                _loc_3.toolTipData = GameDefConfig.instance.getEquipName(param1);
                _loc_3.clear();
                _loc_3.updateAroundEffect();
            }
            return;
        }// end function

        public function getEquipByType(param1:int) : OtherEquipItem
        {
            return this._equipmentList[param1];
        }// end function

        public function get equipmentList() : Vector.<OtherEquipItem>
        {
            return this._equipmentList;
        }// end function

    }
}
